#include<iostream>
#include<fstream>
#include"contacts.pb.h"

using namespace std;
void AddPeoleInfo(contacts::PeopleInfo* people)
{
  cout<<"-----------------------新增联系人------------------"<<endl; 
  cout<<"请输入联系人姓名：";
  string name;
  getline(cin,name);
  people->set_name(name);

  cout<<"请输入联系人年龄：";
  int age;
  cin>>age;
  people->set_age(age);
  //清除输入缓冲区中的内容（因为在输入年龄后，又按下了换行符，因此为了不影响后面的内容，需要清除）
  //256:表示最多清除256个字符
  //斜杠n表示，遇到斜杠n就停止下来
  cin.ignore(256,'\n');
 
  for(int i = 0;;i++)
  {
    cout<<"请输入联系人电话"<<i+1<<"(只输入回车完成电话新增): ";
    string number;
    getline(cin,number);
    if(number.empty())
    {
      break;
    }

    contacts::PeopleInfo_Phone* phone = people->add_phone();
    phone->set_number(number);

  }

  cout<<"----------------------------新增成功------------------"<<endl;

}

int main()
{
  contacts::Contacts contacts;
    //读取本地已存在的通讯录文件
    fstream input("contacts.bin",ios::in | ios::binary);
    if(!input)
    {
      cout<<"contacts.bin not find,create new file!"<<endl;

    }
    else if(!contacts.ParseFromIstream(&input))
    {
      cerr<<"parse error"<<endl;
      input.close();
      return -1;
    }

    //向通讯录中添加一个联系人

    AddPeoleInfo(contacts.add_contacts());
    //将通讯录写入本地文件中
    fstream output("contacts.bin",ios::out | ios::trunc | ios::binary);
   if(!contacts.SerializeToOstream(&output))
   {
     cerr<<"write error"<<endl;
     input.close();
     output.close();
     return -1;
   }

   cout<<"write success!"<<endl;
   input.close();
   output.close();
    return 0;
}
